package com.shuang.hash5;

import java.util.HashMap;
import java.util.Map;

public class FourSumCount {
    public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
        //先统计遍历前两个数组中所有元素组合之和存到map中key为元素之和 值为元素之和出现的次数
        //在遍历后两个数组中所有元素组合 是否与map中存的有匹配的 匹配成功一次 次数加上map中统计的次数

        //定义map
        Map<Integer, Integer> map = new HashMap();

        //遍历前两个数组 统计所有元素组合之和作为key 出现次数作为值
        for (int num1 : nums1) {
            for (int num2 : nums2) {
                int sum = num1 + num2;
                //map.getOrDefault(sum, 0)的作用是 如果map中有sum这个键的话就返回sum对应的值 没有sum这个键就返回第二个参数设置的默认值0
                map.put(sum, map.getOrDefault(sum, 0) + 1);
            }
        }

        //用于统计结果次数
        int res = 0;

        //遍历后两个数组 在map中找是否有相匹配的值(在map中找是否存在相加为0的情况，同时记录次数)
        for (int num3 : nums3) {
            for (int num4 : nums4) {
                res += map.getOrDefault(0 - num3 - num4, 0);
            }
        }

        return res;
    }
}
